package com.zeny.express.framework.webapp.support;

import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.zeny.express.framework.shared.util.DateUtils;

/**
 * struts2日期转换类
 * 
 * @author zhuwei
 * @date 2013年10月30日 下午4:42:05
 */
@SuppressWarnings("rawtypes")
public class DateConverter extends StrutsTypeConverter {

	/**
	 * 字符串转为日期
	 * 
	 * @author zhuwei
	 * @date 2013年10月30日 下午4:44:04
	 * @see org.apache.struts2.util.StrutsTypeConverter#convertFromString(java.util.Map,
	 *      java.lang.String[], java.lang.Class)
	 */
	public Object convertFromString(Map context, String[] values, Class toClass) {
		if (values == null || values.length == 0) {
			return null;
		}
		
		if (toClass.isArray()) {
			Date[] dates = new Date[values.length];
			for (int i = 0, n = dates.length; i < n; i++) {
				dates[i] = DateUtils.parseDate(values[i]);
			}
			return dates;
		}
		return DateUtils.parseDate(values[0]);
	}

	/**
	 * 日期转为字符串
	 * 
	 * @author zhuwei
	 * @date 2013年10月30日 下午4:43:57
	 * @see org.apache.struts2.util.StrutsTypeConverter#convertToString(java.util.Map,
	 *      java.lang.Object)
	 */
	public String convertToString(Map context, Object value) {
		if (!(value instanceof Date)) {
			return String.valueOf(value);
		}
		
		return DateUtils.format((Date) value);
	}
}
